Fix reloading of configuration and meta-data changes Id5819facb591d548df9febf288e38065949128ec made a lot of classes singleton and as result the configuration and the meta-data storage was never updated at runtime. I3f2797983ee5ab690b9806f9b8f4744259598810 fixed one occurrence of this problem but missed to do the same fix in all affected places. Change-Id: I210f6a4c1c3d2156c99e991c72022709a237e7ae Signed-off-by: Edwin Kempin <edwin.kempin@sap.com> (cherry picked from commit 838472ff6fdaf9711c9dbed5569000af731a86d2) 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java index 45ad2ba..d7cd3d2 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java 
@@ -34,20 +34,23 @@  @Singleton  class GetOwner implements RestReadView<ServiceUserResource> {  private final GroupsCollection groups; - private final ProjectLevelConfig storage; + private final String pluginName; + private final ProjectCache projectCache;  private final GroupJson json;    @Inject  GetOwner(GroupsCollection groups, @PluginName String pluginName,  ProjectCache projectCache, GroupJson json) {  this.groups = groups; - this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); + this.pluginName = pluginName; + this.projectCache = projectCache;  this.json = json;  }    @Override  public Response<GroupInfo> apply(ServiceUserResource rsrc)  throws ResourceNotFoundException, OrmException { + ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db");  String owner = storage.get().getString(USER, rsrc.getUser().getUserName(), KEY_OWNER);  if (owner != null) {  GroupDescription.Basic group = groups.parseId(owner); 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java index 6056524..497bc47 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java 
@@ -39,7 +39,8 @@  @Singleton  class GetServiceUser implements RestReadView<ServiceUserResource> {  private final Provider<GetAccount> getAccount; - private final ProjectLevelConfig storage; + private final String pluginName; + private final ProjectCache projectCache;  private final GetOwner getOwner;  private final AccountInfo.Loader.Factory accountLoader;   @@ -48,7 +49,8 @@  @PluginName String pluginName, ProjectCache projectCache,  GetOwner getOwner, AccountInfo.Loader.Factory accountLoader) {  this.getAccount = getAccount; - this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); + this.pluginName = pluginName; + this.projectCache = projectCache;  this.getOwner = getOwner;  this.accountLoader = accountLoader;  } @@ -56,6 +58,7 @@  @Override  public ServiceUserInfo apply(ServiceUserResource rsrc)  throws ResourceNotFoundException, OrmException { + ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db");  String username = rsrc.getUser().getUserName();  Config db = storage.get();  if (!db.getSubsections(USER).contains(username)) { 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java index b295df2..e6e4e06 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java 
@@ -42,7 +42,8 @@  @Singleton  class ListServiceUsers implements RestReadView<ConfigResource> {  private final Provider<CurrentUser> userProvider; - private final ProjectLevelConfig storage; + private final String pluginName; + private final ProjectCache projectCache;  private final AccountCache accountCache;  private final Provider<ServiceUserCollection> serviceUsers;  private final Provider<GetServiceUser> getServiceUser; @@ -53,7 +54,8 @@  AccountCache accountCache, Provider<ServiceUserCollection> serviceUsers,  Provider<GetServiceUser> getServiceUser) {  this.userProvider = userProvider; - this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); + this.pluginName = pluginName; + this.projectCache = projectCache;  this.accountCache = accountCache;  this.serviceUsers = serviceUsers;  this.getServiceUser = getServiceUser; @@ -62,6 +64,7 @@  @Override  public Map<String, ServiceUserInfo> apply(ConfigResource rscr)  throws OrmException, AuthException { + ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db");  CurrentUser user = userProvider.get();  if (user == null || !user.isIdentifiedUser()) {  throw new AuthException("Authentication required"); 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java index be3c3c5..f411dfc 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java 
@@ -57,7 +57,8 @@    private final Provider<GetConfig> getConfig;  private final GroupsCollection groups; - private final ProjectLevelConfig storage; + private final String pluginName; + private final ProjectCache projectCache;  private final Project.NameKey allProjects;  private final MetaDataUpdate.User metaDataUpdateFactory;  private final GroupJson json; @@ -70,7 +71,8 @@  Provider<CurrentUser> self) {  this.getConfig = getConfig;  this.groups = groups; - this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); + this.pluginName = pluginName; + this.projectCache = projectCache;  this.allProjects = projectCache.getAllProjects().getProject().getNameKey();  this.metaDataUpdateFactory = metaDataUpdateFactory;  this.json = json; @@ -81,6 +83,7 @@  public Response<GroupInfo> apply(ServiceUserResource rsrc, Input input)  throws UnprocessableEntityException, RepositoryNotFoundException,  MethodNotAllowedException, IOException, OrmException, ResourceConflictException { + ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db");  Boolean ownerAllowed = getConfig.get().apply(new ConfigResource()).allowOwner;  if ((ownerAllowed == null || !ownerAllowed)  && !self.get().getCapabilities().canAdministrateServer()) { 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java index 5d709a2..0638922 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java 
@@ -42,7 +42,8 @@  private final CreateServiceUserNotes.Factory serviceUserNotesFactory;  private final GitRepositoryManager repoManager;  private final WorkQueue workQueue; - private final PluginConfig cfg; + private final PluginConfigFactory cfgFactory; + private final String pluginName;    @Inject  RefUpdateListener(CreateServiceUserNotes.Factory serviceUserNotesFactory, @@ -51,11 +52,13 @@  this.serviceUserNotesFactory = serviceUserNotesFactory;  this.repoManager = repoManager;  this.workQueue = workQueue; - this.cfg = cfgFactory.getFromGerritConfig(pluginName); + this.cfgFactory = cfgFactory; + this.pluginName = pluginName;  }    @Override  public void onGitReferenceUpdated(final Event event) { + PluginConfig cfg = cfgFactory.getFromGerritConfig(pluginName);  if (!cfg.getBoolean("createNotes", true)) {  return;  } 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java index 19ef84c..12d8d1c 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java 
@@ -50,7 +50,8 @@  private final CreateServiceUser.Factory createServiceUserFactory;  private final Provider<ListServiceUsers> list;  private final Provider<AccountsCollection> accounts; - private final ProjectLevelConfig storage; + private final String pluginName; + private final ProjectCache projectCache;  private final Provider<CurrentUser> userProvider;  private final GroupsCollection groups;   @@ -64,7 +65,8 @@  this.createServiceUserFactory = createServiceUserFactory;  this.list = list;  this.accounts = accounts; - this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); + this.pluginName = pluginName; + this.projectCache = projectCache;  this.userProvider = userProvider;  this.groups = groups;  } @@ -72,6 +74,7 @@  @Override  public ServiceUserResource parse(ConfigResource parent, IdString id)  throws ResourceNotFoundException, AuthException, OrmException { + ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db");  IdentifiedUser serviceUser = accounts.get().parseId(id.get());  if (serviceUser == null  || !storage.get().getSubsections(USER)